#include <iostream>

#if 0
    template <typename T>
    constexpr T a = T(3.1415926);

    int main()
    {
        std::cout << a<int> << std::endl;
        std::cout << a<double> << std::endl;

        // 上面的就相当于C里的强转
        double d = 3.1415926;
        std::cout << (int)d << std::endl;

        return 0;
    }
#endif

#if 1
    template<typename T1, typename T2>
    struct Test
    {
        T1 first;
        T2 second;
    };

    template<typename T1>
    // struct Test<T1, int>
    // {

    // };
    using B = Test<T1, int>; // 别名模板

    int main()
    {
    
        double d = 3.1415926;
        std::cout << (int)d << std::endl;

        return 0;
    }
#endif

#if 1
    // [[deprecated]] ： 标记，未来可能会被丢弃，谨慎使用
    template<typename T1, typename T2>
    struct [[deprecated]] Test
    {
        T1 first;
        T2 second;
    };

    template<typename T1>
    // struct Test<T1, int>
    // {

    // };
    using B = Test<T1, int>; // 别名模板

    int main()
    {
    
        double d = 3.1415926;
        std::cout << (int)d << std::endl;

        return 0;
    }
#endif
